program prog;

function contarLetra(nombreFichero : string; letraBuscada : char) : integer;
	var
		vFich : text;
		numLetras : integer;
		letraActual : char;

	begin
		assign(vFich, nombreFichero);
		reset(vFich);
		numLetras := 0;
		while not eof(vFich) do
			begin
				read(vFich, letraActual);
				if letraActual = letraBuscada then
					begin
						numLetras := numLetras + 1;
					end;
			end;
		close(vFich);
		contarLetra := numLetras;
	end;

procedure contarTokens(nombreFichero : string; var letras, palabras, espacios : integer);
	var
		vFich : text;
		longitud : integer;

	begin
		espacios := contarLetra(nombreFichero, ' ');
		assign(vFich, nombreFichero);
		reset(vFich);
		longitud := 0;
		while not eof(vFich) do
			begin
				longitud := longitud + 1;
			end;
		letras := longitud - espacios;
		palabras := espacios + 1;
	end;

var
	nombre : string;
	letra : char;
	l, p, e:integer;

begin
	write('Dame una ruta a un archivo: ');
	readln(nombre);
	write('Dame una letra: ');
	readln(letra);
	write('La letra ', letra);
	write(' aparece ', contarLetra(nombre, letra));
	writeln(' veces en el archivo ', nombre);
	contarTokens(nombre, l, p, e);
	writeln('El archivo tiene ', l, ' letras, ', p, ' palabras y ', e, ' espacios.');
	readln();
end.
